#include <iostream>
#include "dijkstra.hh"

using namespace blue;

void show(std::vector<int> pre, int snode, int enode){
    std::cout<<"Display path from ["<<snode<<"] to ["<<enode<<"]."<<std::endl;
    while(pre[enode]>=0){
        std::cout<<enode<<"-->";
        enode = pre[enode];
    }

    std::cout<<enode<<std::endl;;
}

int main(int argc, char const *argv[])
{
#if false
    std::vector<std::vector<int> > map={
        {0,5,2,AlgDijkstra::INF},
        {5,2,0,3},
        {2,2,0,7},
        {AlgDijkstra::INF,3,7,0}
    };
#endif

#if true
    std::vector<std::vector<int> > map={
        { 0, 1,12,AlgDijkstra::INF,AlgDijkstra::INF,AlgDijkstra::INF},
        {AlgDijkstra::INF,0,9,3,AlgDijkstra::INF,AlgDijkstra::INF},
        {AlgDijkstra::INF,AlgDijkstra::INF,0,AlgDijkstra::INF,5,AlgDijkstra::INF},
        {AlgDijkstra::INF,AlgDijkstra::INF,4,0,13,15},
        {AlgDijkstra::INF,AlgDijkstra::INF,AlgDijkstra::INF,AlgDijkstra::INF,0,4},
        {AlgDijkstra::INF,AlgDijkstra::INF,AlgDijkstra::INF,AlgDijkstra::INF,AlgDijkstra::INF,0}
    };
#endif

    int sn=1,en=6;
    AlgDijkstra alg(map);
    std::vector<int> pre = alg.plan(sn-1,en-1);

    show(pre,sn-1,en-1);

    return 0;
}
